package org.jgs1904.controller;

import java.io.IOException;
import java.lang.reflect.Method;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 	派发控制器
 * 
 * 	其他控制器继承该类，其他控制器只写业务方法，保证方法名和method属性值一致即可。
 * @author junki
 * @date 2020年3月26日
 */
public class DispatcherController extends HttpServlet {

	private static final long serialVersionUID = 935992874761738564L;

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		// 获取method参数
		String methodName = request.getParameter("method");
		
		// 判断method是否为空，如果没有method参数，或者method参数是空内容，我们调用默认指定的方法execute。
		if (methodName == null || methodName.trim().equals("")) {
			methodName = "execute";
		}

		// 创建本类的class对象
		Class<?> clazz = this.getClass();

		try {
			// 通过class对象获取对应的方法
			Method method = clazz.getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);
			// 执行对应的方法
			method.invoke(this, request, response);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}
